/**
 * \file XMLAttribute.cpp
 * \brief XMLAttribute definition class
 * \author Edouard ROGE
 * \date 16 October 2012
 */

#include <sstream>
#include "XMLAttribute.h"

namespace Core
{
	namespace File
	{
		XMLAttribute::XMLAttribute()
		{
		}


		XMLAttribute::XMLAttribute(const std::string & _strName, const std::string & _strValue)
			: m_strAttributeName(_strName), m_strAttributeValue(_strValue)
		{

		}


		XMLAttribute::~XMLAttribute()
		{

		}


		void XMLAttribute::SetName(const std::string & _name)
		{
			m_strAttributeName = _name;
		}


		const std::string & XMLAttribute::GetName() const
		{
			return m_strAttributeName;
		}

		template <class T>
		void XMLAttribute::SetValue(const T & _value)
		{
			std::ostringstream os;
			os << _value;
			m_strAttributeValue = os.str();
		}


		/*void XMLAttribute::SetValue(const uint32 & _value)
		{
		}


		void XMLAttribute::SetValue(const float & _value)
		{
		std::ostringstream os;
		os << _value;
		m_strAttributeValue = os.str();
		}


		void XMLAttribute::SetValue(const std::string & _value)
		{
		m_strAttributeValue = _value;
		}*/


		error XMLAttribute::GetValue(uint32 & _value) const
		{
			_value = atoi(m_strAttributeValue.c_str());
			return errOK;
		}


		error XMLAttribute::GetValue(float & _value) const
		{
			_value = (float)atof(m_strAttributeValue.c_str());
			return errOK;
		}


		error XMLAttribute::GetValue(std::string & _value) const
		{
			_value = m_strAttributeValue;
			return errOK;
		}

		const std::string & XMLAttribute::GetStringValue() const
		{
			return m_strAttributeValue;
		}
	}
}